package com.xvheng.module.backendApi.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.xvheng.common.annotation.Excel;
import com.xvheng.common.core.domain.BaseEntity;

/**
 * 会员个人信息对象 tm_user
 * 
 * @author xvheng
 * @date 2025-01-03
 */
public class Member extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 会员id */
    private String id;

    /** 手机号码 */
    @Excel(name = "手机号码")
    private String mobile;

    /** 分组id */
    @Excel(name = "分组id")
    private String groupId;

    /** 会员号 */
    @Excel(name = "会员号")
    private String userNo;

    /** 头像 */
    @Excel(name = "头像")
    private String avatar;

    /** 称呼 */
    @Excel(name = "称呼")
    private String name;

    /** 微信open_id */
    @Excel(name = "微信open_id")
    private String openId;

    /** 证件号码 */
    @Excel(name = "证件号码")
    private String idcard;

    /** 等级id */
    @Excel(name = "等级id")
    private String gradeId;

    /** 会员开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "会员开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 会员结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "会员结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 余额 */
    @Excel(name = "余额")
    private BigDecimal balance;

    /** 积分 */
    @Excel(name = "积分")
    private Long point;

    /** 性别 1男；0女 */
    @Excel(name = "性别 1男；0女")
    private String sex;

    /** 出生日期 */
    @Excel(name = "出生日期")
    private String birthday;

    /** 车牌号 */
    @Excel(name = "车牌号")
    private String carNo;

    /** 来源渠道 */
    @Excel(name = "来源渠道")
    private String source;

    /** 密码 */
    @Excel(name = "密码")
    private String password;

    /** salt */
    @Excel(name = "salt")
    private String salt;

    /** 地址 */
    @Excel(name = "地址")
    private String address;

    /** 所属商户id */
    @Excel(name = "所属商户id")
    private String merchantId;

    /** 所属店铺id */
    @Excel(name = "所属店铺id")
    private String storeId;

    /** 是否员工 */
    @Excel(name = "是否员工")
    private String isStaff;

    /** 状态，A：激活；N：禁用；D：删除 */
    @Excel(name = "状态，A：激活；N：禁用；D：删除")
    private String status;

    /** 备注信息 */
    @Excel(name = "备注信息")
    private String description;

    /** 最后操作人 */
    @Excel(name = "最后操作人")
    private String operator;

    /** 单次消费金额,用于数据传输,不做存储 */
    @Excel(name = "消费金额")
    private BigDecimal expenseMoney;

    //充卡使用/消费
    private UserCoupon userCoupon;

    //消费使用
    private List<UserCoupon> userCouponList;

    public List<UserCoupon> getUserCouponList()
    {
        return userCouponList;
    }

    public void setUserCouponList(List<UserCoupon> userCouponList)
    {
        this.userCouponList = userCouponList;
    }

    public BigDecimal getExpenseMoney() {
        return expenseMoney;
    }

    public void setExpenseMoney(BigDecimal expenseMoney) {
        this.expenseMoney = expenseMoney;
    }

    public UserCoupon getUserCoupon() {
        return userCoupon;
    }

    public void setUserCoupon(UserCoupon userCoupon) {
        this.userCoupon = userCoupon;
    }

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }
    public void setMobile(String mobile) 
    {
        this.mobile = mobile;
    }

    public String getMobile() 
    {
        return mobile;
    }
    public void setGroupId(String groupId) 
    {
        this.groupId = groupId;
    }

    public String getGroupId() 
    {
        return groupId;
    }
    public void setUserNo(String userNo) 
    {
        this.userNo = userNo;
    }

    public String getUserNo() 
    {
        return userNo;
    }
    public void setAvatar(String avatar) 
    {
        this.avatar = avatar;
    }

    public String getAvatar() 
    {
        return avatar;
    }
    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }
    public void setOpenId(String openId) 
    {
        this.openId = openId;
    }

    public String getOpenId() 
    {
        return openId;
    }
    public void setIdcard(String idcard) 
    {
        this.idcard = idcard;
    }

    public String getIdcard() 
    {
        return idcard;
    }
    public void setGradeId(String gradeId) 
    {
        this.gradeId = gradeId;
    }

    public String getGradeId() 
    {
        return gradeId;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setBalance(BigDecimal balance) 
    {
        this.balance = balance;
    }

    public BigDecimal getBalance() 
    {
        return balance;
    }
    public void setPoint(Long point) 
    {
        this.point = point;
    }

    public Long getPoint() 
    {
        return point;
    }
    public void setSex(String sex)
    {
        this.sex = sex;
    }

    public String getSex()
    {
        return sex;
    }
    public void setBirthday(String birthday) 
    {
        this.birthday = birthday;
    }

    public String getBirthday() 
    {
        return birthday;
    }
    public void setCarNo(String carNo) 
    {
        this.carNo = carNo;
    }

    public String getCarNo() 
    {
        return carNo;
    }
    public void setSource(String source) 
    {
        this.source = source;
    }

    public String getSource() 
    {
        return source;
    }
    public void setPassword(String password) 
    {
        this.password = password;
    }

    public String getPassword() 
    {
        return password;
    }
    public void setSalt(String salt) 
    {
        this.salt = salt;
    }

    public String getSalt() 
    {
        return salt;
    }
    public void setAddress(String address) 
    {
        this.address = address;
    }

    public String getAddress() 
    {
        return address;
    }
    public void setMerchantId(String merchantId) 
    {
        this.merchantId = merchantId;
    }

    public String getMerchantId() 
    {
        return merchantId;
    }
    public void setStoreId(String storeId) 
    {
        this.storeId = storeId;
    }

    public String getStoreId() 
    {
        return storeId;
    }
    public void setIsStaff(String isStaff) 
    {
        this.isStaff = isStaff;
    }

    public String getIsStaff() 
    {
        return isStaff;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setOperator(String operator) 
    {
        this.operator = operator;
    }

    public String getOperator() 
    {
        return operator;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("mobile", getMobile())
            .append("groupId", getGroupId())
            .append("userNo", getUserNo())
            .append("avatar", getAvatar())
            .append("name", getName())
            .append("openId", getOpenId())
            .append("idcard", getIdcard())
            .append("gradeId", getGradeId())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("balance", getBalance())
            .append("point", getPoint())
            .append("sex", getSex())
            .append("birthday", getBirthday())
            .append("carNo", getCarNo())
            .append("source", getSource())
            .append("password", getPassword())
            .append("salt", getSalt())
            .append("address", getAddress())
            .append("merchantId", getMerchantId())
            .append("storeId", getStoreId())
            .append("isStaff", getIsStaff())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("status", getStatus())
            .append("description", getDescription())
            .append("operator", getOperator())
            .append("expenseMoney", getExpenseMoney())
                .append("userCouponList", getUserCouponList())
            .toString();
    }
}
